//http请求
import axios from 'axios'
import qs from 'qs'
import router from './../../router/index'
//store为实例化生成的
import store from './../../store/index'
import { Toast } from 'mint-ui';
export default{
    //定义插件的公共函数
    install(Vue){
        //图片根目录
        Vue.prototype.IMG_BASEURL = "./../../image/";
        /* 参数序列化 注入vue全局中，这样我们可以在组件内或者JS内通过使用this.$qs来使用qs库*/
        Vue.prototype.$qs = qs;
		//默认值配置
		//axios.defaults.baseURL = 'https://tbb.gvgcn.com/';
        axios.defaults.baseURL = 'http://192.168.5.184:8025/';
        //axios.defaults.baseURL = 'http://api.tbb.com';
        
        axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
        axios.defaults.headers.common['Platform'] = "h5";
        if(localStorage.t){
            //登录成功后，在加头信息，不认取的有误
            axios.defaults.headers.common['Authorization'] = localStorage.t;
		}
        Vue.prototype.$http = axios;
        Vue.config.productionTip = false;
        Vue.prototype.url = location.href.split('/');
        //公共get请求函数
        Vue.prototype.get = function (obj){
            return new Promise((resolve, reject)=>{
                this.$http.get(obj.url,{
                        params: obj.data
                    }).then(
                    respose=>{
                        //成功后显示列表
                        if(!respose.data.code){
                            resolve(respose.data.data);
                        }
                    }
                ).catch(
                    error=>{
                        if (error.response) {
                            // 请求已发出，但服务器响应的状态码不在 2xx 范围内
                            if(error.response.data.info){
                                reject(error.response);
                                Vue.prototype.errMessage(error.response.data.info);
                            }
                        }
                    }
                );
            });
        };
        //公共post请求函数
        Vue.prototype.post = function (obj){
            return new Promise((resolve, reject) =>{
                this.$http.post(obj.url,this.$qs.stringify(obj.data)).then(
                    respose=>{
                        //成功后显示列表
                        if(!respose.data.code){
                            resolve(respose.data.data);
                        }
                    }
                ).catch(
                    error=>{
                        if (error.response) {
                            // 请求已发出，但服务器响应的状态码不在 2xx 范围内
                            if(error.response.data.info){
                                reject(error.response);
                                Vue.prototype.errMessage(error.response.data.info);
                            }
                        }else{
                            Vue.prototype.errMessage("Error: Network Error");
                        }
                    }
                );
            })
        };
        //公共处理请求错误信
        Vue.prototype.errMessage = function(errorInfo){
            store.state.comfirmMessage = errorInfo;
        	if(errorInfo == "登录过期,请重新登录!"){
        		//直接打开去登录弹框
                setTimeout(function(){
                    router.push('/login');
                },3000);
        	}else{
        		//弹出错误信息弹框
        		Vue.prototype.confirm(errorInfo);
        	}
        };
        //获取浏览器的参数
        Vue.prototype.confirm = function (error) {
            Toast({
                message: error,
                duration: 2000,
                position: 'bottom'
            });
        }
        //获取浏览器的参数
        Vue.prototype.getQueryString = function (name) {
          return decodeURIComponent((new RegExp('[?|&]'+name+'='+'([^&;]+?)(&|#|;|$)').exec(location.href)||[,""])[1].replace(/\+/g,'%20'))||null;
        }
        //获取浏览器的参数
        Vue.prototype.getUUId = function () {
            var s = [];
            var hexDigits = "0123456789abcdef";
            for (let i = 0; i < 36; i++) {
                s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
            }
            s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
            s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
            s[8] = s[13] = s[18] = s[23] = ""; //去掉"-"
            var uuid = s.join("");
            return uuid;
        }
        Vue.prototype.formatDate = function(value,format) {
            if(value){
                 if(value.toString().length == 10){
                      value = value*1000
                  }
                  var dateObj = new Date(value);
                    var date = {
                          "Y+": dateObj.getYear(),
                          "M+": dateObj.getMonth() + 1,
                          "d+": dateObj.getDate(),
                          "h+": dateObj.getHours(),
                          "m+": dateObj.getMinutes(),
                          "s+": dateObj.getSeconds(),
                          "q+": Math.floor((dateObj.getMonth() + 3) / 3),
                          "S+": dateObj.getMilliseconds()
                    };
                    if (/(y+)/i.test(format)) {
                        format = format.replace(RegExp.$1, (dateObj.getFullYear() + '').substr(4 - RegExp.$1.length));
                    }
                    for (let k in date) {
                        if (new RegExp("(" + k + ")").test(format)) {
                            format = format.replace(RegExp.$1, RegExp.$1.length == 1? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
                        }
                   }
                   return format;
              }
        }

        Vue.prototype.getUserInfo = function (callback) {
            Vue.prototype.get({
                url:"api/user/info"
            }).then(respose=>{
                localStorage.u = JSON.stringify(respose);
                store.dispatch('changeUser',respose)
                if(callback){
                   callback(); 
                }
            }) 
        }
    }
}
